<?php

namespace App\Http\Controllers;

use App\User;
use Illuminate\Http\Request;

class UserController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {

//        怎么就记不住呢，一个模型一个类，auth是做用户认证,说白了就是处理表单的
//        auth不处理数据吧
//        不是有一个user模型类吗，那不就是你的那张数据表


//        get()不就是获得所有的用户数据吗，laravel自带的
//        现在$users是一个变量，前台模板想要调用，是不是得分配变量啊


//        首页展示，获得所有数据
//        $users = User::get();
//        循环结束，下一步：分页
        $users = User::paginate(5);

        return view("user.index",compact("users"));


//        用户授权完毕,下一步,编辑和删除
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {

    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {

    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {

        $res = User::find($id);
//        dd($res->toArray());
        return view("user.show",compact("res"));

    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
//    切记这是编辑,不能获得所有的数据
    public function edit($id)
    {

//        $user = User::get()
        $user = User::find($id);

//        echo 111;

//        用户授权,第一个参数为授权的动作,第二个为相关的模型
        $this->authorize("update",$user);

        return view("user.edit",compact("user"));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
//    为什么要用update,不用edit,看参数,edit传了一个参数,update传了三个参数,更适合我们使用
    public function update(Request $request, $id)
    {

        $user = User::find($id);
        $post = $request->all();
        $user->name = $post["name"];
        if ($post["password"]){
            $user->password=bcrypt($post["password"]);
        }
        $user->save();
        session()->flash("success","资料修改成功");
        return redirect()->route("user.index");

//        echo 111;

    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
//        删除方法
//        先找到你对应要删除的那条数据
        $user = User::find($id);


//        用权限策略判断有没有资格删除
        $this->authorize("delete",$user);


//        然后开始删除
//        $user->delete();


//        第二种方法删除，直接调用模型方法：destroy
        User::destroy($id);



        session()->flash("success","恭喜你，删除成功");

        return redirect()->route("user.index");

//        删除写完，开始写发邮件
//        echo 111;
    }
}
